/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entidades;

import dao.Dao;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Maria Eloyza
 */
public class Util {

    private static SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    private static SimpleDateFormat dateTimeFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");

    public static String DatetoSting(Date data) {
        return dateFormat.format(data);
    }

    public static Date StringtoDate(String data) {
        try {
            return dateFormat.parse(data);
        } catch (ParseException ex) {
            Logger.getLogger(Util.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    public static String DateTimetoSting(Date data) {
        return dateTimeFormat.format(data);
    }

    public static Date StringtoDateTime(String data) {
        try {
            return dateTimeFormat.parse(data);
        } catch (ParseException ex) {
            Logger.getLogger(Util.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    public static String randomName() {
        String nome = "";
        Random r = new Random();

        for (int i = 0; i < 10; i++) {
            int num = r.nextInt(36);
            switch (num) {
                case 0:
                    nome += "a";
                    break;
                case 1:
                    nome += "b";
                    break;
                case 2:
                    nome += "c";
                    break;
                case 3:
                    nome += "d";
                    break;
                case 4:
                    nome += "f";
                    break;
                case 5:
                    nome += "g";
                    break;
                case 6:
                    nome += "h";
                    break;
                case 7:
                    nome += "i";
                    break;
                case 8:
                    nome += "j";
                    break;
                case 9:
                    nome += "k";
                    break;
                case 10:
                    nome += "l";
                    break;
                case 11:
                    nome += "m";
                    break;
                case 12:
                    nome += "n";
                    break;
                case 13:
                    nome += "o";
                    break;
                case 14:
                    nome += "p";
                    break;
                case 15:
                    nome += "q";
                    break;
                case 16:
                    nome += "r";
                    break;
                case 17:
                    nome += "s";
                    break;
                case 18:
                    nome += "t";
                    break;
                case 19:
                    nome += "u";
                    break;
                case 20:
                    nome += "v";
                    break;
                case 21:
                    nome += "w";
                    break;
                case 22:
                    nome += "x";
                    break;
                case 23:
                    nome += "y";
                    break;
                case 24:
                    nome += "z";
                    break;
                case 25:
                    nome += "0";
                    break;
                case 26:
                    nome += "1";
                    break;
                case 27:
                    nome += "2";
                    break;
                case 28:
                    nome += "3";
                    break;
                case 29:
                    nome += "4";
                    break;
                case 30:
                    nome += "5";
                    break;
                case 31:
                    nome += "6";
                    break;
                case 32:
                    nome += "7";
                    break;
                case 33:
                    nome += "8";
                    break;
                case 34:
                    nome += "9";
                    break;
                case 35:
                    nome += "e";
                    break;

            }
        }

        return nome;
    }

    static String getExtension(String name) {
        return name.substring(name.lastIndexOf("."));
    }

    public static Double getDouble(String doub) {
        double saida;
        if (doub.contains(",")) {
            String[] vetorDouble = doub.split(",");
            double n1 = Double.parseDouble(vetorDouble[0]);
            double n2 = (Double.parseDouble(vetorDouble[1]) / 100);
            saida = n1 + n2;
        } else {
            saida = Double.parseDouble(doub);
        }
        return saida;
    }

    public static List<Produto> produtosRecentes() {
        List<Produto> produtos = (new Dao<Produto>(Produto.class)).list();
        List<Produto> produtosRecentes = new ArrayList<Produto>();

        if (produtos.size() <= 6) {
            produtosRecentes = produtos;
        } else {
            for (int i = produtos.size() - 1; produtosRecentes.size() < 6; i--) {
                produtosRecentes.add(produtos.get(i));
            }
        }

        return produtosRecentes;
    }

    public static List<Produto> produtosRecentesSem(Produto p) {
        //retorna os produtos recentes excluindo o que ja esta sendo exibido
        List<Produto> produtos = (new Dao<Produto>(Produto.class)).list();
        List<Produto> produtosRecentes = new ArrayList<Produto>();

        if (produtos.size() <= 6) {
            for (Produto prod : produtos) {
                if (prod.getId() != p.getId()) {
                    produtosRecentes.add(prod);
                }
            }
        } else {
            for (int i = produtos.size() - 1; produtosRecentes.size() < 5; i--) {
                if (produtos.get(i).getId() != p.getId()) {
                    produtosRecentes.add(produtos.get(i));
                }
            }
        }

        return produtosRecentes;
    }

    public static String quebraLinha(String entrada) {
        return entrada.replaceAll("\n", "<br />");
    }
    
    public static String codificarTexto(String texto){
        texto.replace("ç", "&ccedil;");
        
        texto.replace("ñ", "&ntilde;");
        texto.replace("Ñ", "&Ntilde;");
        texto.replace("ã", "&atilde;");
        texto.replace("Ã", "&Atilde;");
        texto.replace("õ", "&otilde;");
        texto.replace("Õ", "&Otilde;");
        
        texto.replace("á", "&aacute;");
        texto.replace("Á", "&Aacute;");
        texto.replace("É", "&Eacute;");
        texto.replace("é", "&eacute;");
        texto.replace("í", "&iacute;");
        texto.replace("Í", "&Iacute;");
        texto.replace("Ú", "&Uacute;");
        texto.replace("ú", "&uacute;");
        texto.replace("ó", "&oacute;");
        texto.replace("Ó", "&Oacute;");
        
        texto.replace("â", "&acirc;");
        texto.replace("Â", "&Acirc;");
        texto.replace("Ê", "&Ecirc;");
        texto.replace("ê", "&ecirc;");
        texto.replace("ô", "&ocirc;");
        texto.replace("Ô", "&Ocirc;");
        
        texto.replace("à", "&agrave;");
        texto.replace("À", "&Agrave;");
        
        texto.replace("ü", "&uuml;");
        texto.replace("Ü", "&Uuml;");
                              
        return texto;
    }

//    public static List<Post> postsRecentes() {
//        List<Post> posts = (new Dao<Post>(Post.class)).list();
//        List<Post> postsRecentes = new ArrayList<Post>();
//
//
//        if (posts.size()
//                <= 3) {
//            postsRecentes = posts;
//        } else {
//            for (int i = posts.size() - 1; postsRecentes.size() < 4; i--) {
//                postsRecentes.add(posts.get(i));
//            }
//        }
//
//        return postsRecentes;
//    }
    public static String cortarLead(String texto) {

        System.out.println("======>texto.indexOf " + texto.indexOf("\n"));
        return texto.substring(texto.indexOf("\r\\"));
    }
//    public static List<Livro> primeiraLinhaLivro(List<Livro> lista) {
//        List<Livro> novaLista = new ArrayList<Livro>();
//        if (lista.size() > 3) {
//            for (int i = 0; i < 3; i++) {
//                novaLista.add(lista.get(i));
//            }
//        } else {
//            for (int i = 0; i < lista.size(); i++) {
//                novaLista.add(lista.get(i));
//            }
//        }
//        return novaLista;
//    }
//
//    public static List<Livro> segundaLinhaLivro(List<Livro> lista) {
//        List<Livro> novaLista = new ArrayList<Livro>();
//        if (lista.size() > 6) {
//            for (int i = 3; i < 6; i++) {
//                novaLista.add(lista.get(i));
//            }
//        } else {
//            for (int i = 3; i < lista.size(); i++) {
//                novaLista.add(lista.get(i));
//            }
//        }
//        return novaLista;
//    }
//
//    public static List<Livro> terceiraLinhaLivro(List<Livro> lista) {
//        List<Livro> novaLista = new ArrayList<Livro>();
//        if (lista.size() > 6) {
//            for (int i = 6; i < lista.size(); i++) {
//                novaLista.add(lista.get(i));
//            }
//        }
//        return novaLista;
//    }
//
//    public static List<Noticia> primeiraLinhaNoticia(List<Noticia> lista) {
//        List<Noticia> novaLista = new ArrayList<Noticia>();
//        if (lista.size() > 3) {
//            for (int i = 0; i < 3; i++) {
//                novaLista.add(lista.get(i));
//            }
//        } else {
//            for (int i = 0; i < lista.size(); i++) {
//                novaLista.add(lista.get(i));
//            }
//        }
//        return novaLista;
//    }
//
//    public static List<Noticia> segundaLinhaNoticia(List<Noticia> lista) {
//        List<Noticia> novaLista = new ArrayList<Noticia>();
//        if (lista.size() > 6) {
//            for (int i = 3; i < 6; i++) {
//                novaLista.add(lista.get(i));
//            }
//        } else {
//            for (int i = 3; i < lista.size(); i++) {
//                novaLista.add(lista.get(i));
//            }
//        }
//        return novaLista;
//    }
//
//    public static List<Noticia> terceiraLinhaNoticia(List<Noticia> lista) {
//        List<Noticia> novaLista = new ArrayList<Noticia>();
//        if (lista.size() > 6) {
//            for (int i = 6; i < lista.size(); i++) {
//                novaLista.add(lista.get(i));
//            }
//        }
//        return novaLista;
//    }
//    public static List<Post> primeiraLinhaPost(List<Post> lista) {
//        List<Post> novaLista = new ArrayList<Post>();
//        if (lista.size() > 3) {
//            for (int i = 0; i < 3; i++) {
//                novaLista.add(lista.get(i));
//            }
//        } else {
//            for (int i = 0; i < lista.size(); i++) {
//                novaLista.add(lista.get(i));
//            }
//        }
//        return novaLista;
//    }
//
//    public static List<Post> segundaLinhaPost(List<Post> lista) {
//        List<Post> novaLista = new ArrayList<Post>();
//        if (lista.size() > 6) {
//            for (int i = 3; i < 6; i++) {
//                novaLista.add(lista.get(i));
//            }
//        } else {
//            for (int i = 3; i < lista.size(); i++) {
//                novaLista.add(lista.get(i));
//            }
//        }
//        return novaLista;
//    }
//
//    public static List<Post> terceiraLinhaPost(List<Post> lista) {
//        List<Post> novaLista = new ArrayList<Post>();
//        if (lista.size() > 6) {
//            for (int i = 6; i < lista.size(); i++) {
//                novaLista.add(lista.get(i));
//            }
//        }
//        return novaLista;
//    }
//
//
//    public static List<Livro> getTopLivros() {
//        List<Livro> todos = new Dao<Livro>(Livro.class).list();
//        List<Livro> retorno = new ArrayList<Livro>();
//        Livro maior, menor;
//        
//        for (int i = 0; i < todos.size(); i++) {
//            for (int j = 0; j < todos.size() - 1; j++) {
//                if (todos.get(j).getComentarios().size() > todos.get(j + 1).getComentarios().size()) {
//                    maior = todos.get(j);
//                    menor = todos.get(j + 1);
//                    todos.set(j, menor);
//                    todos.set(j + 1, maior);
//
////                    for (i = 0; i < n; i++) {
////                        for (j = 0; j < n - 1; j++) {
////                            if (v[j] > v[j + 1]) {
////                                aux = v[j];
////                                v[j] = v[j + 1];
////                                v[j + 1] = aux;
////                            }
////                        }
////                    }
//                }
//            }
//        }
//        
//        if (todos.size() >= 4) {
//            //pega os 4 que queremos
//            for (int i = todos.size()-1; i >= todos.size()-4; i--) {
//                retorno.add(todos.get(i));
//            }
//            return retorno;
//        } else {
//            return todos;
//        }
//    }
}
